package hive.User_Defined_Functions;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
 * @describe:  用户自定义函数 一进一出
 *步骤：
 *  1.继承 org.apache.hadoop.hive.ql.UDF，需要实现 evaluate 函数；evaluate 函数支持重载；
 *  2.hive命令行添加 jar
 *      add jar linux_jar_path
 *  3.hive命令行创建function
 *      create [temporary] function [dbname.]function_name AS class_name;
 *  hive的命令行删除function
 *      Drop [temporary] [dbname.]function_name; 	function [if exists]
 */
public class MyUDF extends UDF {

    /**
     * 实现 evaluate 函数；evaluate 函数支持重载；
     * 注意： UDF必须要有返回类型，可以返回 null，但是返回类型不能为 void
     */
    public Text evaluate(final Text s) {
        if (s == null) {
            return null;
        }
        return new Text(s.toString().toLowerCase());
    }
}

/*
 * 测试：
 *  add jar udf.jar
 *  create temporary function mylower as "hive.User_Defined_Functions.MyUDF";
 *  select mylower(name) from student;
 */
